/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package ORDB4ORA.provider;

import ORDB4ORA.util.ORDB4ORAAdapterFactory;

import java.util.ArrayList;
import java.util.Collection;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;

import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

/**
 * This is the factory that is used to provide the interfaces needed to support Viewers.
 * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
 * The adapters also support Eclipse property sheets.
 * Note that most of the adapters are shared among multiple instances.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public class ORDB4ORAItemProviderAdapterFactory extends ORDB4ORAAdapterFactory
		implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
	/**
	 * This keeps track of the root adapter factory that delegates to this adapter factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComposedAdapterFactory parentAdapterFactory;

	/**
	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IChangeNotifier changeNotifier = new ChangeNotifier();

	/**
	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected Collection<Object> supportedTypes = new ArrayList<Object>();

	/**
	 * This constructs an instance.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ORDB4ORAItemProviderAdapterFactory() {
		supportedTypes.add(IEditingDomainItemProvider.class);
		supportedTypes.add(IStructuredItemContentProvider.class);
		supportedTypes.add(ITreeItemContentProvider.class);
		supportedTypes.add(IItemLabelProvider.class);
		supportedTypes.add(IItemPropertySource.class);
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Model} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ModelItemProvider modelItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Model}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createModelAdapter() {
		if (modelItemProvider == null) {
			modelItemProvider = new ModelItemProvider(this);
		}

		return modelItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Attribute} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AttributeItemProvider attributeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Attribute}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAttributeAdapter() {
		if (attributeItemProvider == null) {
			attributeItemProvider = new AttributeItemProvider(this);
		}

		return attributeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.NestedTableType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NestedTableTypeItemProvider nestedTableTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.NestedTableType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNestedTableTypeAdapter() {
		if (nestedTableTypeItemProvider == null) {
			nestedTableTypeItemProvider = new NestedTableTypeItemProvider(this);
		}

		return nestedTableTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.LOBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected LOBTypeItemProvider lobTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.LOBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createLOBTypeAdapter() {
		if (lobTypeItemProvider == null) {
			lobTypeItemProvider = new LOBTypeItemProvider(this);
		}

		return lobTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.ROWIDType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ROWIDTypeItemProvider rowidTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.ROWIDType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createROWIDTypeAdapter() {
		if (rowidTypeItemProvider == null) {
			rowidTypeItemProvider = new ROWIDTypeItemProvider(this);
		}

		return rowidTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.ANSICharacterType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ANSICharacterTypeItemProvider ansiCharacterTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.ANSICharacterType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createANSICharacterTypeAdapter() {
		if (ansiCharacterTypeItemProvider == null) {
			ansiCharacterTypeItemProvider = new ANSICharacterTypeItemProvider(
					this);
		}

		return ansiCharacterTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.ANSINumberType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ANSINumberTypeItemProvider ansiNumberTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.ANSINumberType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createANSINumberTypeAdapter() {
		if (ansiNumberTypeItemProvider == null) {
			ansiNumberTypeItemProvider = new ANSINumberTypeItemProvider(this);
		}

		return ansiNumberTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.AnyType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AnyTypeItemProvider anyTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.AnyType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAnyTypeAdapter() {
		if (anyTypeItemProvider == null) {
			anyTypeItemProvider = new AnyTypeItemProvider(this);
		}

		return anyTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.XMLType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected XMLTypeItemProvider xmlTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.XMLType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createXMLTypeAdapter() {
		if (xmlTypeItemProvider == null) {
			xmlTypeItemProvider = new XMLTypeItemProvider(this);
		}

		return xmlTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.DerivedTable} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DerivedTableItemProvider derivedTableItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.DerivedTable}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDerivedTableAdapter() {
		if (derivedTableItemProvider == null) {
			derivedTableItemProvider = new DerivedTableItemProvider(this);
		}

		return derivedTableItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.View} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ViewItemProvider viewItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.View}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createViewAdapter() {
		if (viewItemProvider == null) {
			viewItemProvider = new ViewItemProvider(this);
		}

		return viewItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.SpacialType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SpacialTypeItemProvider spacialTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.SpacialType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSpacialTypeAdapter() {
		if (spacialTypeItemProvider == null) {
			spacialTypeItemProvider = new SpacialTypeItemProvider(this);
		}

		return spacialTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.MediaType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MediaTypeItemProvider mediaTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.MediaType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMediaTypeAdapter() {
		if (mediaTypeItemProvider == null) {
			mediaTypeItemProvider = new MediaTypeItemProvider(this);
		}

		return mediaTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CharacterFeatureItemProvider characterFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link java.util.Map.Entry}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCharacterFeatureAdapter() {
		if (characterFeatureItemProvider == null) {
			characterFeatureItemProvider = new CharacterFeatureItemProvider(
					this);
		}

		return characterFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NumberFeatureItemProvider numberFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link java.util.Map.Entry}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNumberFeatureAdapter() {
		if (numberFeatureItemProvider == null) {
			numberFeatureItemProvider = new NumberFeatureItemProvider(this);
		}

		return numberFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected RawFeatureItemProvider rawFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link java.util.Map.Entry}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createRawFeatureAdapter() {
		if (rawFeatureItemProvider == null) {
			rawFeatureItemProvider = new RawFeatureItemProvider(this);
		}

		return rawFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected RowFeatureItemProvider rowFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link java.util.Map.Entry}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createRowFeatureAdapter() {
		if (rowFeatureItemProvider == null) {
			rowFeatureItemProvider = new RowFeatureItemProvider(this);
		}

		return rowFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DatetimeFeatureItemProvider datetimeFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link java.util.Map.Entry}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDatetimeFeatureAdapter() {
		if (datetimeFeatureItemProvider == null) {
			datetimeFeatureItemProvider = new DatetimeFeatureItemProvider(this);
		}

		return datetimeFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link java.util.Map.Entry} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IntervalFeatureItemProvider intervalFeatureItemProvider;

	/**
	 * This creates an adapter for a {@link java.util.Map.Entry}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createIntervalFeatureAdapter() {
		if (intervalFeatureItemProvider == null) {
			intervalFeatureItemProvider = new IntervalFeatureItemProvider(this);
		}

		return intervalFeatureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Column} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ColumnItemProvider columnItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Column}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createColumnAdapter() {
		if (columnItemProvider == null) {
			columnItemProvider = new ColumnItemProvider(this);
		}

		return columnItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Package} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PackageItemProvider packageItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Package}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPackageAdapter() {
		if (packageItemProvider == null) {
			packageItemProvider = new PackageItemProvider(this);
		}

		return packageItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.MethodParameter} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MethodParameterItemProvider methodParameterItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.MethodParameter}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMethodParameterAdapter() {
		if (methodParameterItemProvider == null) {
			methodParameterItemProvider = new MethodParameterItemProvider(this);
		}

		return methodParameterItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.OperationParameter} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected OperationParameterItemProvider operationParameterItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.OperationParameter}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createOperationParameterAdapter() {
		if (operationParameterItemProvider == null) {
			operationParameterItemProvider = new OperationParameterItemProvider(
					this);
		}

		return operationParameterItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Procedure} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ProcedureItemProvider procedureItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Procedure}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createProcedureAdapter() {
		if (procedureItemProvider == null) {
			procedureItemProvider = new ProcedureItemProvider(this);
		}

		return procedureItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Function} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FunctionItemProvider functionItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Function}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createFunctionAdapter() {
		if (functionItemProvider == null) {
			functionItemProvider = new FunctionItemProvider(this);
		}

		return functionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Trigger} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected TriggerItemProvider triggerItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Trigger}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createTriggerAdapter() {
		if (triggerItemProvider == null) {
			triggerItemProvider = new TriggerItemProvider(this);
		}

		return triggerItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.StructuralComponent} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StructuralComponentItemProvider structuralComponentItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.StructuralComponent}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStructuralComponentAdapter() {
		if (structuralComponentItemProvider == null) {
			structuralComponentItemProvider = new StructuralComponentItemProvider(
					this);
		}

		return structuralComponentItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Varray} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected VarrayItemProvider varrayItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Varray}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createVarrayAdapter() {
		if (varrayItemProvider == null) {
			varrayItemProvider = new VarrayItemProvider(this);
		}

		return varrayItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.StructuredType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StructuredTypeItemProvider structuredTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.StructuredType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStructuredTypeAdapter() {
		if (structuredTypeItemProvider == null) {
			structuredTypeItemProvider = new StructuredTypeItemProvider(this);
		}

		return structuredTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Method} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MethodItemProvider methodItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Method}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMethodAdapter() {
		if (methodItemProvider == null) {
			methodItemProvider = new MethodItemProvider(this);
		}

		return methodItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.TypedTable} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected TypedTableItemProvider typedTableItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.TypedTable}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createTypedTableAdapter() {
		if (typedTableItemProvider == null) {
			typedTableItemProvider = new TypedTableItemProvider(this);
		}

		return typedTableItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.StoredNestedTable} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StoredNestedTableItemProvider storedNestedTableItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.StoredNestedTable}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStoredNestedTableAdapter() {
		if (storedNestedTableItemProvider == null) {
			storedNestedTableItemProvider = new StoredNestedTableItemProvider(
					this);
		}

		return storedNestedTableItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.ReferenceType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ReferenceTypeItemProvider referenceTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.ReferenceType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createReferenceTypeAdapter() {
		if (referenceTypeItemProvider == null) {
			referenceTypeItemProvider = new ReferenceTypeItemProvider(this);
		}

		return referenceTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Table} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected TableItemProvider tableItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Table}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createTableAdapter() {
		if (tableItemProvider == null) {
			tableItemProvider = new TableItemProvider(this);
		}

		return tableItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.ForeignKey} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ForeignKeyItemProvider foreignKeyItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.ForeignKey}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createForeignKeyAdapter() {
		if (foreignKeyItemProvider == null) {
			foreignKeyItemProvider = new ForeignKeyItemProvider(this);
		}

		return foreignKeyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.PrimaryKey} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PrimaryKeyItemProvider primaryKeyItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.PrimaryKey}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPrimaryKeyAdapter() {
		if (primaryKeyItemProvider == null) {
			primaryKeyItemProvider = new PrimaryKeyItemProvider(this);
		}

		return primaryKeyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Unique} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected UniqueItemProvider uniqueItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Unique}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createUniqueAdapter() {
		if (uniqueItemProvider == null) {
			uniqueItemProvider = new UniqueItemProvider(this);
		}

		return uniqueItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.NotNull} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected NotNullItemProvider notNullItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.NotNull}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createNotNullAdapter() {
		if (notNullItemProvider == null) {
			notNullItemProvider = new NotNullItemProvider(this);
		}

		return notNullItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Check} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CheckItemProvider checkItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Check}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCheckAdapter() {
		if (checkItemProvider == null) {
			checkItemProvider = new CheckItemProvider(this);
		}

		return checkItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.Parameter} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ParameterItemProvider parameterItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.Parameter}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createParameterAdapter() {
		if (parameterItemProvider == null) {
			parameterItemProvider = new ParameterItemProvider(this);
		}

		return parameterItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.BuiltInCharacterType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BuiltInCharacterTypeItemProvider builtInCharacterTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.BuiltInCharacterType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBuiltInCharacterTypeAdapter() {
		if (builtInCharacterTypeItemProvider == null) {
			builtInCharacterTypeItemProvider = new BuiltInCharacterTypeItemProvider(
					this);
		}

		return builtInCharacterTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.BuiltInNumberType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BuiltInNumberTypeItemProvider builtInNumberTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.BuiltInNumberType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBuiltInNumberTypeAdapter() {
		if (builtInNumberTypeItemProvider == null) {
			builtInNumberTypeItemProvider = new BuiltInNumberTypeItemProvider(
					this);
		}

		return builtInNumberTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.LongAndRawType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected LongAndRawTypeItemProvider longAndRawTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.LongAndRawType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createLongAndRawTypeAdapter() {
		if (longAndRawTypeItemProvider == null) {
			longAndRawTypeItemProvider = new LongAndRawTypeItemProvider(this);
		}

		return longAndRawTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link ORDB4ORA.DatetimeType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DatetimeTypeItemProvider datetimeTypeItemProvider;

	/**
	 * This creates an adapter for a {@link ORDB4ORA.DatetimeType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDatetimeTypeAdapter() {
		if (datetimeTypeItemProvider == null) {
			datetimeTypeItemProvider = new DatetimeTypeItemProvider(this);
		}

		return datetimeTypeItemProvider;
	}

	/**
	 * This returns the root adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public ComposeableAdapterFactory getRootAdapterFactory() {
		return parentAdapterFactory == null ? this : parentAdapterFactory
				.getRootAdapterFactory();
	}

	/**
	 * This sets the composed adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void setParentAdapterFactory(
			ComposedAdapterFactory parentAdapterFactory) {
		this.parentAdapterFactory = parentAdapterFactory;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean isFactoryForType(Object type) {
		return supportedTypes.contains(type) || super.isFactoryForType(type);
	}

	/**
	 * This implementation substitutes the factory itself as the key for the adapter.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter adapt(Notifier notifier, Object type) {
		return super.adapt(notifier, this);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object adapt(Object object, Object type) {
		if (isFactoryForType(type)) {
			Object adapter = super.adapt(object, type);
			if (!(type instanceof Class)
					|| (((Class<?>) type).isInstance(adapter))) {
				return adapter;
			}
		}

		return null;
	}

	/**
	 * This adds a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void addListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.addListener(notifyChangedListener);
	}

	/**
	 * This removes a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void removeListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.removeListener(notifyChangedListener);
	}

	/**
	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void fireNotifyChanged(Notification notification) {
		changeNotifier.fireNotifyChanged(notification);

		if (parentAdapterFactory != null) {
			parentAdapterFactory.fireNotifyChanged(notification);
		}
	}

	/**
	 * This disposes all of the item providers created by this factory. 
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void dispose() {
		if (modelItemProvider != null)
			modelItemProvider.dispose();
		if (ansiCharacterTypeItemProvider != null)
			ansiCharacterTypeItemProvider.dispose();
		if (ansiNumberTypeItemProvider != null)
			ansiNumberTypeItemProvider.dispose();
		if (anyTypeItemProvider != null)
			anyTypeItemProvider.dispose();
		if (attributeItemProvider != null)
			attributeItemProvider.dispose();
		if (builtInCharacterTypeItemProvider != null)
			builtInCharacterTypeItemProvider.dispose();
		if (builtInNumberTypeItemProvider != null)
			builtInNumberTypeItemProvider.dispose();
		if (characterFeatureItemProvider != null)
			characterFeatureItemProvider.dispose();
		if (checkItemProvider != null)
			checkItemProvider.dispose();
		if (columnItemProvider != null)
			columnItemProvider.dispose();
		if (datetimeFeatureItemProvider != null)
			datetimeFeatureItemProvider.dispose();
		if (datetimeTypeItemProvider != null)
			datetimeTypeItemProvider.dispose();
		if (foreignKeyItemProvider != null)
			foreignKeyItemProvider.dispose();
		if (functionItemProvider != null)
			functionItemProvider.dispose();
		if (intervalFeatureItemProvider != null)
			intervalFeatureItemProvider.dispose();
		if (lobTypeItemProvider != null)
			lobTypeItemProvider.dispose();
		if (longAndRawTypeItemProvider != null)
			longAndRawTypeItemProvider.dispose();
		if (mediaTypeItemProvider != null)
			mediaTypeItemProvider.dispose();
		if (methodItemProvider != null)
			methodItemProvider.dispose();
		if (methodParameterItemProvider != null)
			methodParameterItemProvider.dispose();
		if (nestedTableTypeItemProvider != null)
			nestedTableTypeItemProvider.dispose();
		if (notNullItemProvider != null)
			notNullItemProvider.dispose();
		if (numberFeatureItemProvider != null)
			numberFeatureItemProvider.dispose();
		if (operationParameterItemProvider != null)
			operationParameterItemProvider.dispose();
		if (packageItemProvider != null)
			packageItemProvider.dispose();
		if (parameterItemProvider != null)
			parameterItemProvider.dispose();
		if (primaryKeyItemProvider != null)
			primaryKeyItemProvider.dispose();
		if (procedureItemProvider != null)
			procedureItemProvider.dispose();
		if (rowidTypeItemProvider != null)
			rowidTypeItemProvider.dispose();
		if (rawFeatureItemProvider != null)
			rawFeatureItemProvider.dispose();
		if (referenceTypeItemProvider != null)
			referenceTypeItemProvider.dispose();
		if (rowFeatureItemProvider != null)
			rowFeatureItemProvider.dispose();
		if (spacialTypeItemProvider != null)
			spacialTypeItemProvider.dispose();
		if (storedNestedTableItemProvider != null)
			storedNestedTableItemProvider.dispose();
		if (structuralComponentItemProvider != null)
			structuralComponentItemProvider.dispose();
		if (structuredTypeItemProvider != null)
			structuredTypeItemProvider.dispose();
		if (tableItemProvider != null)
			tableItemProvider.dispose();
		if (triggerItemProvider != null)
			triggerItemProvider.dispose();
		if (typedTableItemProvider != null)
			typedTableItemProvider.dispose();
		if (uniqueItemProvider != null)
			uniqueItemProvider.dispose();
		if (varrayItemProvider != null)
			varrayItemProvider.dispose();
		if (xmlTypeItemProvider != null)
			xmlTypeItemProvider.dispose();
		if (derivedTableItemProvider != null)
			derivedTableItemProvider.dispose();
		if (viewItemProvider != null)
			viewItemProvider.dispose();
	}

}
